package com.wanghaixin.controller;

import com.wanghaixin.dto.DataGridResult;
import com.wanghaixin.dto.QueryDTO;
import com.wanghaixin.log.MyLog;
import com.wanghaixin.pojo.SysMenu;
import com.wanghaixin.service.MenuService;
import com.wanghaixin.utils.R;
import com.wanghaixin.utils.ShiroUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @Auther: 王海新
 * @Date: 2020/10/22 19:52
 * @Description: 菜单模块
 */
@Controller
public class MenuController {

    @Autowired
    private MenuService menuService;

    /*********************************************************************************************************************
     * @Author:  王海新
     * @Date:  8:23  2020/10/23
     * @Version:  1.0.0
     * @Description:  分页查询/搜索/排序
     */
    @MyLog("菜单列表")
   @RequestMapping("/sys/menu/list")
   @ResponseBody
   //权限的测试
   @RequiresPermissions("sys:menu:list")
   public DataGridResult findMenu(QueryDTO queryDTO){
       return menuService.findMenu(queryDTO);
   }

   /*********************************************************************************************************************
    * @Author:  王海新
    * @Date:  8:24  2020/10/23
    * @Version:  1.0.0
    * @Description:  批量删除
    */
   @MyLog("菜单删除")
   @RequestMapping("/sys/menu/del")
   @ResponseBody
    public R deleteMenu(@RequestBody List<Long> ids){
       return menuService.deleteMenu(ids);
    }

    /*********************************************************************************************************************
     * @Author:  王海新
     * @Date:  10:56  2020/10/23
     * @Version:  1.0.0
     * @Description:  菜单树形树结构
     *
     */
    @RequestMapping("/sys/menu/select")
    @ResponseBody
    public R selectMenu(){
        return menuService.selectMenu();
    }

    /*********************************************************************************************************************
     * @Author:  王海新
     * @Date:  11:12  2020/10/23
     * @Version:  1.0.0
     * @Description:  实现添加功能
     */
    @RequestMapping("/sys/menu/save")
    @ResponseBody
    public R saveMenu(@RequestBody SysMenu sysMenu){
       return menuService.saveMenu(sysMenu);
    }

    /*********************************************************************************************************************
     * @Author:  王海新
     * @Date:  19:50  2020/10/23
     * @Version:  1.0.0
     * @Description:  通过id查单条数据
     */
    @RequestMapping("/sys/menu/info/{menuId}")
    @ResponseBody
    public R findMenuById(@PathVariable("menuId") Long menuId){
        return menuService.findMenuById(menuId);
    }

    /*********************************************************************************************************************
     * @Author:  王海新
     * @Date:  20:01  2020/10/23
     * @Version:  1.0.0
     * @Description:  修改单条数据
     */
    @RequestMapping("/sys/menu/update")
    @ResponseBody
    public R update(@RequestBody  SysMenu sysMenu){
        return menuService.updateMenu(sysMenu);
    }

    /*********************************************************************************************************************
     * @Author:  王海新
     * @Date:  12:11  2020/10/28
     * @Version:  1.0.0
     * @Description:  根据用户信息获取动态菜单
     */
    @RequestMapping("sys/menu/user")
    @ResponseBody
    public R userMenu(){
        //获取动态菜单，需要用户的id。
        // 在用户登录的时候信息已经存储到shiro中，我们可以从shiro中取出id
        long userId = ShiroUtils.getUserId();
        return menuService.findUserMenu(userId);
    }
}
